#include "widget.h"

#include <QPainter>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
     resize(1000, 800);
}

Widget::~Widget()
{
}

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter pat(this);
#if 0
    //第一种方式：可以让画家不动，每次更新要画图的起始位置
    //设置画笔
    QPen pen;
    //第一个矩形是红色
    pen.setColor(QColor(Qt::red));
    pat.setPen(pen);

    pat.drawRect(10, 10, 200, 100);

    //第二个矩形是绿色
    pen.setColor(QColor(Qt::green));
    pat.setPen(pen);

    pat.drawRect(310, 10, 200, 100);

    //第三个矩形是红色
    pen.setColor(QColor(Qt::red));
    pat.setPen(pen);

    pat.drawRect(610, 10, 200, 100);
#endif
#if 0
    //第二种方式：可以让画家移动，但是图形与画家之间的相对位置保证一致
    //设置画笔
    QPen pen;
    //第一个矩形是红色
    pen.setColor(QColor(Qt::red));
    pat.setPen(pen);
    pat.drawRect(10, 10, 200, 100);

    //第二个矩形是绿色
    pat.translate(300, 0);//移动画家的位置
    pen.setColor(QColor(Qt::green));
    pat.setPen(pen);

    pat.drawRect(10, 10, 200, 100);

    //第三个矩形是红色
    pat.translate(300, 0);//移动画家的位置
    pen.setColor(QColor(Qt::red));
    pat.setPen(pen);

    pat.drawRect(10, 10, 200, 100);
#endif
    //第三种方式：可以让画家移动，保持画家的状态（画笔的颜色、画家的位置）
    //设置画笔
    QPen pen;
    //第一个矩形是红色
    pen.setColor(QColor(Qt::red));
    pat.setPen(pen);
    pat.drawRect(10, 10, 200, 100);
    pat.save();//保持画家的状态，类似于使用的是push操作

    //第二个矩形是绿色
    pat.translate(300, 0);//移动画家的位置
    pen.setColor(QColor(Qt::green));
    pat.setPen(pen);

    pat.drawRect(10, 10, 200, 100);
    pat.save();

    //第三个矩形是红色
    pat.restore();//恢复，类似于使用的是top与pop结合的操作
    pat.restore();//恢复
    pat.translate(600, 0);//移动画家的位置
    pat.drawRect(10, 10, 200, 100);

}

